# 发货地货运量统计
import pandas as pd
import matplotlib.pyplot as plt

# 设置中文字体和图片清晰度
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['figure.dpi'] = 300

# 读取Excel文件
try:
    file_path = 'd:\\我爱数学\\FhjlViewDD.xlsx'
    df = pd.read_excel(file_path)
    
    # 检查数据列
    print('文件列名:', df.columns.tolist())
    
    # 转换日期列为日期类型
    df['创建时间'] = pd.to_datetime(df['创建时间'])
    
    # 筛选6月份数据
    june_data = df[(df['创建时间'].dt.month == 6)]
    
    # 按发货地分组计算总量并排序
    location_stats = june_data.groupby('发货地')['净重'].sum().sort_values(ascending=False)
    
    # 绘制饼状图
    plt.figure(figsize=(12, 12))
    
    # 只显示前5大发货地，其余归为"其他"
    top_locations = location_stats.head(5)
    other_locations = pd.Series({
        '其他': location_stats[5:].sum()
    })
    pie_data = pd.concat([top_locations, other_locations])
    
    # 绘制饼图
    wedges = plt.pie(pie_data, 
                   labels=None, 
                   startangle=90)[0]
    
    # 计算百分比并添加到图例标签
    percentages = [f'{100*x/sum(pie_data):.1f}%' for x in pie_data]
    legend_labels = [f'{label} ({percent})' for label, percent in zip(pie_data.index, percentages)]
    
    # 添加带百分比的图例
    plt.legend(wedges, legend_labels,
              title='发货地及占比',
              loc='center left',
              bbox_to_anchor=(1, 0.5),
              fontsize=8)
    plt.title('6月份各发货地货运量占比')
    
    # 保存图片
    plt.savefig('d:\\我爱数学\\git630实训\\mark\\练习一\\6月发货地货运量统计.png')
    plt.show()
    
    # 保存统计结果到CSV
    pie_data.to_csv('d:\\我爱数学\\git630实训\\mark\\练习一\\6月发货地货运量统计.csv')
    
    # 输出统计结果
    print('\n6月份各发货地货运量统计:')
    print(pie_data.to_string())
    
except FileNotFoundError:
    print('错误: 未找到Excel文件，请检查路径')
except KeyError as e:
    print(f'错误: 数据列 {e} 不存在，请检查列名')
except Exception as e:
    print(f'错误: {str(e)}')